package day04;

import java.util.Arrays;
import java.util.Comparator;

public class Demo01 {
    public static void main(String[] args) {
        /*
         * 使用接口中的静态方法
         */
        System.out.println(Movable.distance());

        /**
         * 在子类型中访问默认方法
         */
        Movable car  = new Movable() {
            @Override
            public void move() {
                System.out.println("Move");
            }
        };
        System.out.println(car.getDistance());

        /**
         * 排序
         */
        String[] names = {"Tom", "Jerry", "Mac","John"};
        //按照字符串排序
        Arrays.sort(names,(s1,s2)-> s1.length()-s2.length());
        System.out.println(Arrays.toString(names));
        //反转排序, reversed() 就是Comparator接口中的默认方法
        Comparator<String> byLength = (s1,s2)-> s1.length()-s2.length();
        Arrays.sort(names, byLength.reversed());
        System.out.println(Arrays.toString(names));
    }
}

/**
 * 可以移动的
 */
interface Movable{
    /**
     * 常量
     */
    int LEVEL = 5;

    /**
     * 抽象方法
     */
    void move();

    /**
     * 静态方法， 属于类型的方法，也就是可以使用当前接口名字调用
     * @return
     */
    static double distance(){
        return 100;
    }

    /**
     * 默认方法，默认方法可以被子类型继承，在子类中使用
     * @return
     */
    default double getDistance(){
        return 100;
    }
}
